1 Foraging Model

The proportion of time an animal is in a feeding behavioral state.

Process Model

\[Y_{i,t+1} \sim Multivariate Normal(d_{i,t},σ)\]

\[d_{i,t}= Y_{i,t} + γ_{s_{i,g,t}}*T_{i,g,t}*( Y_{i,g,t}- Y_{i,g,t-1} )\]

\[ \begin{matrix} \alpha_{i,1,1} & 1-\alpha_{i,1,1} \\ \alpha_{i,2,1} & 1-\alpha_{i,2,1} \\ \end{matrix} \] \[logit(\phi_{traveling}) = \alpha_{Behavior_{t-1}} \] The behavior at time t of individual i on track g is a discrete draw. \[S_{i,g,t} \sim Cat(\phi_{traveling},\phi_{foraging})\]

Dive information is a mixture model based on behavior (S)

\(\text{Average dive depth}(\psi)\) \[ \psi \sim Normal(dive_{\mu_S},dive_{\tau_S})\]

## # A tibble: 11 x 3
## # Groups:   Animal [?]
##    Animal  Year     n
##     <int> <ord> <int>
##  1 131111  2016   375
##  2 131115  2016   850
##  3 131116  2016  1475
##  4 131127  2016  6780
##  5 131128  2016    60
##  6 131130  2016  1014
##  7 131132  2016  1703
##  8 131133  2016  6419
##  9 131134  2016  1445
## 10 131136  2016  4874
## 11 154187  2016  1380

Dive profiles per indidivuals

Data Statistics before track cut

## # A tibble: 11 x 2
##    Animal     n
##     <int> <int>
##  1 131111    58
##  2 131115   170
##  3 131116   294
##  4 131127  1327
##  5 131128    12
##  6 131130    70
##  7 131132   198
##  8 131133  1237
##  9 131134   279
## 10 131136   964
## 11 154187   275
## [1] 4884

Data statistics after track cut

## # A tibble: 10 x 2
##    Animal     n
##     <int> <int>
##  1 131111    38
##  2 131115   170
##  3 131116   291
##  4 131127  1037
##  5 131130    59
##  6 131132   142
##  7 131133  1160
##  8 131134   240
##  9 131136   825
## 10 154187   269

sink(“Bayesian/ThreeState.jags”) cat(" model{

#from jonsen 2016

pi <- 3.141592653589

#for each if 6 argos class observation error

for(x in 1:6){

##argos observation error##
argos_prec[x,1:2,1:2] <- argos_cov[x,,]

#Constructing the covariance matrix
argos_cov[x,1,1] <- argos_sigma[x]
argos_cov[x,1,2] <- 0
argos_cov[x,2,1] <- 0
argos_cov[x,2,2] <- argos_alpha[x]
}

for(i in 1:ind){
for(g in 1:tracks[i]){

## Priors for first true location
#for lat long
y[i,g,1,1:2] ~ dmnorm(argos[i,g,1,1,1:2],argos_prec[1,1:2,1:2])

#First movement - random walk.
y[i,g,2,1:2] ~ dmnorm(y[i,g,1,1:2],iSigma)

###First Behavioral State###
state[i,g,1] ~ dcat(firstmove[]) ## assign state for first obs

#Process Model for movement
for(t in 2:(steps[i,g]-1)){

#Behavioral State at time T
phi[i,g,t,1] <- Traveling[state[i,g,t-1]] 
phi[i,g,t,2] <- Foraging[state[i,g,t-1]] 
phi[i,g,t,3] <- 1-(phi[i,g,t,1] + phi[i,g,t,2])

state[i,g,t] ~ dcat(phi[i,g,t,])

#Turning covariate
#Transition Matrix for turning angles
T[i,g,t,1,1] <- cos(theta[state[i,g,t]])
T[i,g,t,1,2] <- (-sin(theta[state[i,g,t]]))
T[i,g,t,2,1] <- sin(theta[state[i,g,t]])
T[i,g,t,2,2] <- cos(theta[state[i,g,t]])

#Correlation in movement change
d[i,g,t,1:2] <- y[i,g,t,] + gamma[state[i,g,t]] * T[i,g,t,,] %*% (y[i,g,t,1:2] - y[i,g,t-1,1:2])

#Gaussian Displacement in location
y[i,g,t+1,1:2] ~ dmnorm(d[i,g,t,1:2],iSigma)

}

#Final behavior state
phi[i,g,steps[i,g],1] <- Traveling[state[i,g,steps[i,g]-1]] 
phi[i,g,steps[i,g],2] <- Foraging[state[i,g,steps[i,g]-1]] 
phi[i,g,steps[i,g],3] <- 1-(phi[i,g,steps[i,g],1] + phi[i,g,steps[i,g],2])
state[i,g,steps[i,g]] ~ dcat(phi[i,g,steps[i,g],])

##  Measurement equation - irregular observations
# loops over regular time intervals (t)    

for(t in 2:steps[i,g]){

# loops over observed locations within interval t
for(u in 1:idx[i,g,t]){ 
zhat[i,g,t,u,1:2] <- (1-j[i,g,t,u]) * y[i,g,t-1,1:2] + j[i,g,t,u] * y[i,g,t,1:2]

#for each lat and long
#argos error
argos[i,g,t,u,1:2] ~ dmnorm(zhat[i,g,t,u,1:2],argos_prec[argos_class[i,g,t,u],1:2,1:2])

#for each dive depth
#dive depth at time t
dive[i,g,t,u] ~ dnorm(depth_mu[state[i,g,t]],depth_tau[state[i,g,t]])T(0.01,)

#dive speed (max depth/duration)
duration[i,g,t,u] ~ dnorm(duration_mu[state[i,g,t]],duration_tau[state[i,g,t]])T(0.01,)

#Assess Model Fit

#Fit dive discrepancy statistics
eval[i,g,t,u] ~ dnorm(depth_mu[state[i,g,t]],depth_tau[state[i,g,t]])
E[i,g,t,u]<-pow((dive[i,g,t,u]-eval[i,g,t,u]),2)/(eval[i,g,t,u])

dive_new[i,g,t,u] ~ dnorm(depth_mu[state[i,g,t]],depth_tau[state[i,g,t]])T(0.01,)
Enew[i,g,t,u]<-pow((dive_new[i,g,t,u]-eval[i,g,t,u]),2)/(eval[i,g,t,u])

}
}
}
}

###Priors###

#Process Variance
iSigma ~ dwish(R,2)
Sigma <- inverse(iSigma)

##Mean Angle
tmp[1] ~ dbeta(10, 10)
tmp[2] ~ dbeta(10, 10)
tmp[3] ~ dbeta(10, 10)

# prior for theta in 'traveling state'
theta[1] <- (2 * tmp[1] - 1) * pi

# prior for theta in 'foraging state'    
theta[2] <- (tmp[2] * pi * 2)

theta[3] <- (tmp[3] * pi * 2)

##Move persistance
# prior for gamma (autocorrelation parameter)

##Behavioral States

gamma[1] ~ dbeta(4,2)       ## 2d movement for traveling state
dev ~ dunif(0.1,1)          ## a random deviate to ensure that gamma[1] > gamma[2]
gamma[2] <- gamma[1] * dev ## 2d movement for foraging state
gamma[3] ~ dbeta(2,20) ## 2d movement for resting state

#Temporal autocorrelation in behavior - remain in current state
Traveling[1] ~ dbeta(1,1)
Traveling[2] ~ dbeta(1,1)
Traveling[3] ~ dbeta(1,1)

#Temporal autocorrelation in behavior - transition to +1 state
Foraging[1] ~ dbeta(1,1)
Foraging[2] ~ dbeta(1,1)
Foraging[3] ~ dbeta(1,1)

#Probability of initial behavior
firstmove ~ ddirch(rep(1,3))

#Dive Mean Priors
depth_mu[1] ~ dnorm(0,0.0001)T(0,)

#we know that foraging dives are probably deeper than traveling dives,
forage ~ dunif(20,500)
depth_mu[2] <- depth_mu[1] + forage

#resting should basically be no dive depths (could be lnorm for exploratory dives)
depth_mu[3] ~ dnorm(0,0.01)T(0,)

#Duration Mean Priors
duration_mu[1] ~ dnorm(5,0.01) #traveling
time_forage~dunif(0,60)
duration_mu[2] = duration_mu[1] + time_forage #foraging
duration_mu[3] ~ dnorm(0,0.01)T(0,) # resting

#depth and duration variance
depth_tau[1] ~ dunif(0,500)
depth_tau[2] ~ dunif(0,500)
depth_tau[3] ~ dunif(0,500)

duration_tau[1] ~ dunif(0,500)
duration_tau[2] ~ dunif(0,500)
duration_tau[3] ~ dunif(0,500)

##Observation Model##
##Argos priors##
#longitudinal argos precision, from Jonsen 2005, 2016, represented as precision not sd

#by argos class
argos_sigma[1] <- 11.9016
argos_sigma[2] <- 10.2775
argos_sigma[3] <- 1.228984
argos_sigma[4] <- 2.162593
argos_sigma[5] <- 3.885832
argos_sigma[6] <- 0.0565539

#latitidunal argos precision, from Jonsen 2005, 2016
argos_alpha[1] <- 67.12537
argos_alpha[2] <- 14.73474
argos_alpha[3] <- 4.718973
argos_alpha[4] <- 0.3872023
argos_alpha[5] <- 3.836444
argos_alpha[6] <- 0.1081156

}"
,fill=TRUE)

sink()

##    user  system elapsed 
##   3.136   0.290 220.523

1.1 Chains

1.2 Temporal autocorrelation in foraging

Reconstructing the transition matrix

1.2.1 Time foraging as a function of time

1.3 Simulate dive depth

1.4 Simulate dive durations

2 Temporal Variation in Dive Behavior

2.1 Diel

2.2 Month

3 Comparison with 2d movement model

##    user  system elapsed 
##   0.234   0.011  74.801

3.1 Chains

Where does the 3d predict foraging that the 2d misses?

Where does the 2d predict foraging that the 3d refines?

3.2 Posterior Checks

The goodness of fit is a measured as chi-squared. The expected value is compared to the observed value of the actual data. In addition, a replicate dataset is generated from the posterior predicted intensity. Better fitting models will have lower discrepancy values and be Better fitting models are smaller values and closer to the 1:1 line. A perfect model would be 0 discrepancy. This is unrealsitic given the stochasticity in the sampling processes. Rather, its better to focus on relative discrepancy. In addition, a model with 0 discrepancy would likely be seriously overfit and have little to no predictive power.

## # A tibble: 1 x 2
##   `mean(E)` `var(Enew)`
##       <dbl>       <dbl>
## 1 -45.71297    27154632